﻿using System.ServiceModel;
using TfsCloudDeploy.Deployment.Service.DataContracts.Interfaces;
using TfsCloudDeploy.Deployment.Service.DataContracts;

namespace TfsCloudDeploy.Deployment.Service.ServiceContracts
{
    [ServiceContract]
    public interface IDeploymentServiceV1
    {
        [OperationContract]
        DeploymentResponseV1 DeployBuild(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 DeployBuildNoBackup(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 RollbackBuild(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 TestBuild(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 BringOnline(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 TakeOffline(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 BackupOnly(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        TransportResponseV1 TransportBuild(TransportRequestV1 transportRequest);

        [OperationContract]
        DeploymentResponseV1 CheckServiceStatus(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 CheckServiceInfo(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 ValidateBuild(DeploymentRequestV1 deploymentRequest);

        [OperationContract]
        DeploymentResponseV1 RestartApp(DeploymentRequestV1 deploymentRequest);
    }
}
